From: Jan Beulich Date: Tue, 26 Nov 2013 08:54:48 +0000 (+0100) Subject: x86/hvm: clean up segment validation X-Git-Tag: archive/raspbian/4.8.0-1+rpi1~1^2~5867 X-Git-Url: https://dgit.raspbian.org/%22http:/www.example.com/cgi/%22https://%22%22/%22http:/www.example.com/cgi/%22https:/%22%22?a=commitdiff_plain;h=a02b0fc87cddc60327bf127491df7aa961059680;p=xen.git x86/hvm: clean up segment validation Use _SEGMENT_* instead of plain numbers where feasible. Signed-off-by: Jan Beulich Reviewed-by: Andrew Cooper --- diff --git a/xen/arch/x86/hvm/hvm.c b/xen/arch/x86/hvm/hvm.c index d80c166ed6..af249f7543 100644 --- a/xen/arch/x86/hvm/hvm.c +++ b/xen/arch/x86/hvm/hvm.c @@ -2259,7 +2259,7 @@ static int hvm_load_segment_selector( desc = *pdesc; /* Segment present in memory? */ - if ( !(desc.b & (1u<<15)) ) + if ( !(desc.b & _SEGMENT_P) ) { fault_type = TRAP_no_segment; goto unmap_and_fail; @@ -2277,7 +2277,7 @@ static int hvm_load_segment_selector( { case x86_seg_cs: /* Code segment? */ - if ( !(desc.b & (1u<<11)) ) + if ( !(desc.b & _SEGMENT_CODE) ) goto unmap_and_fail; /* Non-conforming segment: check DPL against RPL. */ if ( !(desc.b & _SEGMENT_EC) && (dpl != rpl) ) @@ -2285,19 +2285,19 @@ static int hvm_load_segment_selector( break; case x86_seg_ss: /* Writable data segment? */ - if ( (desc.b & (5u<<9)) != (1u<<9) ) + if ( (desc.b & (_SEGMENT_CODE|_SEGMENT_WR)) != _SEGMENT_WR ) goto unmap_and_fail; if ( (dpl != cpl) || (dpl != rpl) ) goto unmap_and_fail; break; case x86_seg_ldtr: /* LDT system segment? */ - if ( (desc.b & (15u<<8)) != (2u<<8) ) + if ( (desc.b & _SEGMENT_TYPE) != (2u<<8) ) goto unmap_and_fail; goto skip_accessed_flag; default: /* Readable code or data segment? */ - if ( (desc.b & (5u<<9)) == (4u<<9) ) + if ( (desc.b & (_SEGMENT_CODE|_SEGMENT_WR)) == _SEGMENT_CODE ) goto unmap_and_fail; /* * Data or non-conforming code segment: